package com.elitel.frame.base.service;

import com.elitel.frame.main.entity.CfgExtend;
import com.elitel.frame.main.entity.SysPrjservice;
import com.elitel.frame.main.entity.ext.CfgExtendExt;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import com.elitel.frame.main.entity.vo.PageResponseVo;
import com.elitel.frame.main.entity.vo.SingleTableInfoVo;
import com.elitel.frame.main.entity.vo.ZTreeDataModelVo;

import java.util.List;

/**
 * @author guoyanfei
 * @Description 单表配置服务接口
 */
public interface CfgExtendService {

    /**
     * @return CfgExtend
     * @throws
     * @Title: selectByPrimaryKey
     * @Description: TODO(跟据主键查询单表服务信息)
     * @author Fanwenquan
     */
    public CfgExtend selectByPrimaryKey(String guid);

    /**
     * @param pr
     * @return
     * @description 分页查询单表配置服务数据
     * @author gyf
     */
    PageResponseVo<CfgExtendExt> getListByPage(PageRequestVo<CfgExtend> pr);

    /**
     * @param serviceId(服务ID)
     * @return 删除结果
     * @description 删除单表配置服务数据
     * @author guoyanfei
     * @date 2017/12/1
     */
    Integer deleteCfgExtendByguid(String serviceId);

    /**
     * @return 插入结果int
     * @description 新增单表配置服务数据
     * @author gyf
     */
    int insertData(CfgExtend cfgExtend);

    /**
     * @param cfgExtendExt
     * @return 新增结果
     * @description 新增单表服务和工程服务表
     * @author guoyanfei
     * @date 2017/11/29
     */
    Integer insertCfgExtendandSysprjs(CfgExtendExt cfgExtendExt);

    /**
     * @return 修改结果int
     * @description 修改单表配置服务数据
     * @author gyf
     */
    int updateData(CfgExtend cfgExtend, CfgExtendExt cfgExtendExt);

    /**
     * @param guid(主键)
     * @return true或false
     * @description 查询主键guid是否存在
     * @author guoyanfei
     */
    boolean existByguid(String guid);

    public List<CfgExtend> selectAllExtend();

    /**
     * @return ZtreeDataModelVo集合
     * @description 获取单表服务Tree数据
     * @author guoyanfei
     */
    List<ZTreeDataModelVo> getTreeCfgExtendList();

    /**
     * @param serviceId(服务ID)
     * @return 数据库类型
     * @description 通过服务ID查询数据库类型
     * @author guoyanfei
     * @date 2017/12/4
     */
    String getdbtypeByserviceId(String serviceId);

    /**
     * <pre>deleteCfgExtendByPrjservice(删除单表服务根据服务中间表)
     * @author：FanWenquan
     * @date：2017年12月7日 上午9:45:51
     * @param prjservice</pre>
     */
    public void deleteCfgExtendByPrjservice(SysPrjservice prjservice);


    List<SingleTableInfoVo> selectByServiceCodes(List<String> serviceCodes);
}
